package tabela;

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.LinkedList;

import javax.swing.JTextField;

public class LinhaTabela implements MouseListener
{
	private LinkedList<JTextField> textFieldsDaLinha;
	private boolean linhaEstahSelecionada; 
	/*sempre que o mouse clicar em qualquer um dos textfields da linha e a linha puder
	 * ser selecionada (a tabela estah no modo deletar linhas), a cor de cada
	 * textfield da linha muda de acordo com o booleano acima*/
	
	private boolean tabelaNoModoDeletarLinhas;
	/*sempre que a tabela estiver no modo de deletar linhas, as linhas da tabela poderao ser
	 * selecionadas ou deselecionadas*/

	
	
	public LinhaTabela(int quantasColunasTemATabela)
	{
		this.textFieldsDaLinha = new LinkedList<JTextField>();
		for(int i = 0; i < quantasColunasTemATabela; i++)
		{
			JTextField umCampoDaLinha = new JTextField(10);
			umCampoDaLinha.addMouseListener(this);
			this.textFieldsDaLinha.add(umCampoDaLinha);
		}
		
		this.linhaEstahSelecionada = false;
		this.tabelaNoModoDeletarLinhas = false;
	}

	public LinkedList<JTextField> pegarTextFieldsDaLinha() {
		return textFieldsDaLinha;
	}
	
	
	public LinkedList<String> pegarValoresDaLinha()
	{
		LinkedList<String> valores = new LinkedList<String>();
		for(int i = 0; i < this.textFieldsDaLinha.size(); i++)
		{
			valores.add(this.textFieldsDaLinha.get(i).getText());
		}
		
		return valores;
	}
	
	@Override
	public void mouseClicked(MouseEvent arg0) 
	{
		//um dos jtextfields foi clicado? Vamos colorir ele e os seus outros texfields e mesma linha
		if(this.tabelaNoModoDeletarLinhas == true)
		{
			//as linhas so podem ser selecionadas se o usuario tiver clicado no botao para apagar linhas da tabela
			if(this.linhaEstahSelecionada == false)
			{
				this.linhaEstahSelecionada = true;
				for(int i = 0; i < this.textFieldsDaLinha.size(); i++)
				{
					JTextField umTextField = this.textFieldsDaLinha.get(i);
					umTextField.setBackground(Color.yellow);
				}
			}
			else
			{
				this.linhaEstahSelecionada = false;
				for(int i = 0; i < this.textFieldsDaLinha.size(); i++)
				{
					JTextField umTextField = this.textFieldsDaLinha.get(i);
					umTextField.setBackground(Color.white);
				}
			}
		}
	}

	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public boolean getTabelaNoModoDeletarLinhas() {
		return tabelaNoModoDeletarLinhas;
	}

	public void setTabelaNoModoDeletarLinhas(
			boolean tabelaNoModoDeletarLinhas) 
	{
		this.tabelaNoModoDeletarLinhas = tabelaNoModoDeletarLinhas;
		
		//toda vez que a tabela sair do modo de deletar linhas, as linhas selecionadas voltam a ficar deselecionadas
		for(int i = 0; i < this.textFieldsDaLinha.size(); i++)
		{
			JTextField umTextField = this.textFieldsDaLinha.get(i);
			umTextField.setBackground(Color.white);
		}
	}

	public boolean getLinhaEstahSelecionada()
	{
		return linhaEstahSelecionada;
	}
	
	public void setLinhaEstahSelecionada(boolean novoValor)
	{
		this.linhaEstahSelecionada = novoValor;
	}

}
